package api

import (
	"gin_gorm/pkg/utils"
	"gin_gorm/service"

	"github.com/gin-gonic/gin"
	logging "github.com/sirupsen/logrus"
)

// 新增一条备忘录
func CreateTask(ctx *gin.Context) {
	var createTask service.CreateTaskService
	claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&createTask); err == nil {
		res := createTask.Create(claim.Id)
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}

// 展示一条备忘录
func ShowTask(ctx *gin.Context) {
	var showTask service.ShowTaskService
	// claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&showTask); err == nil {
		res := showTask.Show(ctx.Param("id"))
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}

// 展示所有的备忘录
func ListTask(ctx *gin.Context) {
	var listTask service.ListaskService
	claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&listTask); err == nil {
		res := listTask.List(claim.Id)
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}

// 更新一条备忘录
func UpdateTask(ctx *gin.Context) {
	var updateTask service.UpdateTaskService
	// claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&updateTask); err == nil {
		res := updateTask.Update(ctx.Param("id"))
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}

// 寻找一条备忘录
func SearchTask(ctx *gin.Context) {
	var searchTask service.SearchTaskService
	claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&searchTask); err == nil {
		res := searchTask.Search(claim.Id)
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}

// 删除一条备忘录
func DeleteTask(ctx *gin.Context) {
	var deleteTask service.DeleteTaskService
	// claim, _ := utils.ParseToken(ctx.GetHeader("Authorization"))
	if err := ctx.ShouldBind(&deleteTask); err == nil {
		res := deleteTask.Delete(ctx.Param("id"))
		ctx.JSON(200, res)
	} else {
		logging.Error(err) // go get github.com/sirupsen/logrus
		ctx.JSON(400, ErrorResponse(err))
	}
}
